home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / OFDb (DE).ifs < prev    next >
Encoding:
Text File  |  2004-10-16  |  10.2 KB  |  350 lines

  1. // GETINFO SCRIPTING
  2. // OFDb (DE) import with small picture
  3.  
  4. (***************************************************
  5.  *  Movie importation script for:                  *
  6.  *  Online-Filmdatenbank(OFDb),                      *
  7.  *   http://www.ofdb.de                            *
  8.  *                                                 *
  9.  *  (c) 2002 Fabian Filipczyk    FFJaro@gmx.de     *
  10.  *                                                 *
  11.  *                                                 *
  12.  *  For use with Ant Movie Catalog 3.4.0           *
  13.  *  www.antp.be/software/moviecatalog              *
  14.  *                                                 *
  15.  *  This program is free software; you can         *
  16.  *  redistribute it and/or modify it under the     *
  17.  *  terms of the GNU General Public License as     *
  18.  *  published by the Free Software Foundation;     *
  19.  *  either version 2 of the License, or (at your   *
  20.  *  option) any later version.                     *
  21.  ***************************************************)
  22.  
  23. program OFDB_DE;
  24. var
  25.   MovieName: string;
  26.  
  27. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  28. var
  29.   i: Integer;
  30. begin
  31.   result := -1;
  32.   if StartAt < 0 then
  33.     StartAt := 0;
  34.   for i := StartAt to List.Count-1 do
  35.     if Pos(Pattern, List.GetString(i)) <> 0 then
  36.     begin
  37.       result := i;
  38.       Break;
  39.     end;
  40. end;
  41. ///////////////////////////////////////////////////////////////////
  42.  
  43. procedure AnalyzePage(Address: string);
  44. var
  45.   Page: TStringList;
  46.   LineNr: Integer;
  47. begin
  48.   Page := TStringList.Create;
  49.   Page.Text := GetPage(Address);
  50.  //  if pos('<title>OFDb - Suchergebnis', Page.Text) = 0 then
  51.   if pos('<title>OFDb - Übersicht der Filmdaten</title>', Page.Text) > 0 then
  52.   begin
  53.     SetField(fieldURL, Address);
  54.     AnalyzeMoviePage(Page)
  55.   end else
  56.   begin
  57.     PickTreeClear;
  58.     LineNr := FindLine('<b>Titel:</b>', Page, 0);
  59.     if LineNr > 0 then
  60.     begin PickTreeAdd('Filme :', '');
  61.       AddMoviesTitles(Page, LineNr);
  62.       if PickTreeExec(Address) then
  63.          AnalyzePage(Address);
  64.     end;
  65.   end;
  66.   Page.Free;
  67. end;
  68.  
  69.  
  70. procedure AnalyzeMoviePage(Page: TStringList);
  71. var
  72.   TomString, Line, Temp, Value: string;
  73.   LineNr, IntValue: Integer;
  74.   BeginPos, EndPos: Integer;
  75. begin
  76.   
  77.   // Picture
  78.   
  79.   //LineNr := FindLine('http://www.hsi-infopool.de/zensur/movies/images/film', Page, 0);
  80.   //http://www.ofdb.de/
  81.   //http://www.ofdb.de/images/film/0/179.jpg
  82.   //images/film/0/179.jpg
  83.  
  84.   LineNr := FindLine('images/film/', Page, 0);
  85.   if LineNr > -1 then
  86.   begin
  87.     Line := Page.GetString(LineNr);
  88.     BeginPos := pos('<img src="', Line) + 10;
  89.  //   BeginPos := pos('<img src=''', Line) + 10;
  90.     if BeginPos > 10 then
  91.     begin
  92. //      EndPos := pos(' alt=', Line)-2;
  93.       EndPos := pos(' alt=', Line)-1;
  94.  //     Value := copy(Line, BeginPos, EndPos - BeginPos);
  95.       Value := copy(Line, BeginPos, EndPos - BeginPos);
  96.       TomString:= 'http://www.ofdb.de/'+Value;
  97.       //Input('OFDb', TomString, MovieName)
  98.       GetPicture(TomString, False);
  99.     end;
  100.   end;
  101.   
  102.   // Original & Translated Title
  103.   LineNr := FindLine('Originaltitel:</font>', Page, 0);
  104.   if LineNr > -1 then
  105.   begin
  106.     LineNr:= LineNr+2;
  107.     Line := Page.GetString(LineNr);
  108.     BeginPos := pos('class="Daten"><b>', Line) + 17;
  109.     EndPos := pos('</b></font>', Line);
  110.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  111.     SetField(fieldOriginalTitle, Value);
  112.     LineNr := Findline('sans-serif" size="3"><b>', Page, 0);
  113.     if LineNr > -1 then
  114.     begin
  115.       Line:= Page.GetString(LineNr);
  116.       BeginPos := pos('sans-serif" size="3"><b>',Line) +24; 
  117.       Endpos :=  pos('</b></font></td>',Line);
  118.       Value := copy(Line,BeginPos, Endpos-Beginpos);
  119.       SetField(fieldTranslatedTitle,Value);  
  120.     end;
  121.   end;
  122.   
  123.   //Country
  124.   LineNr := Findline('Herstellungsland:', Page, 0);
  125.   if LineNr > -1 then
  126.   begin
  127.     LineNr := LineNr+3;
  128.     Line:= Page.GetString(LineNr);
  129.     Delete(Line, 1, pos('<a',Line)-1);
  130.     BeginPos := pos('">',Line) +2;
  131.     Endpos :=  pos('</a><br>',Line);
  132.     Value := copy(Line,BeginPos, Endpos-Beginpos);
  133.     SetField(fieldCountry, Value);
  134.   end;
  135.   
  136.   // Year
  137.   LineNr := Findline('Erscheinungsjahr:', Page, 0);
  138.   if LineNr > -1 then
  139.   begin
  140.     LineNr := LineNr+3;
  141.     Line:= Page.GetString(LineNr);
  142.     Delete(Line, 1, pos('<a',Line)-1);
  143.     BeginPos := pos('">',Line) +2; 
  144.     Endpos :=  pos('</a></b>',Line);
  145.     Value := copy(Line,BeginPos, Endpos-Beginpos);
  146.     SetField(fieldYear, Value); 
  147.   end;    
  148.   
  149.   // Category
  150.   LineNr := Findline('Genre(s):', Page, 0);
  151.   if LineNr > -1 then
  152.   begin
  153.     Value:= '';
  154.     LineNr := LineNr+2;
  155.     Line:= Page.GetString(LineNr);
  156.     repeat
  157.       Delete(Line, 1, pos('<a',Line)-1);
  158.       BeginPos := pos('">', Line);
  159.       if BeginPos > 0 then
  160.       begin
  161.         Delete(Line, 1, BeginPos +1 );
  162.         Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
  163.         Value:= Value+', '+ Temp ;
  164.       end;
  165.     until (BeginPos < 1);
  166.    Value:= copy(Value, 3,length(Value)-1);
  167.    SetField(fieldCategory, Value);
  168.   end;
  169.     
  170.   // Actors
  171.   LineNr := Findline('Darsteller', Page, 0);
  172.   if LineNr > -1 then
  173.   begin
  174.     LineNr := LineNr+3;
  175.     Line:= Page.GetString(LineNr);
  176.     if pos('[mehr]', Line) > 0 then
  177.     begin 
  178.       BeginPos := pos('<a href="view.php?page=film',Line) +9; 
  179.       Endpos :=  pos('">[mehr]</a>',Line);
  180.       Value := copy(Line,BeginPos, Endpos-Beginpos);
  181.       GetActors(Value);
  182.     end else 
  183.     begin
  184.       Value:= '';
  185.       repeat
  186.         Delete(Line, 1, pos('<a',Line)-1);
  187.         BeginPos := pos('">', Line);
  188.         if BeginPos > 0 then
  189.         begin
  190.           Delete(Line, 1, BeginPos +1 );
  191.           Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
  192.           Value:= Value+', '+ Temp ;
  193.         end;
  194.       until (BeginPos < 1);
  195.       Value:= copy(Value, 3,length(Value)-1);
  196.       SetField(fieldActors, Value);
  197.     end;
  198.   end; 
  199.        
  200.   //Director
  201.   LineNr := Findline('Regie', Page, 0);
  202.   if LineNr > -1 then
  203.   begin
  204.     Value:= '';
  205.     LineNr := LineNr+3;
  206.     Line:= Page.GetString(LineNr);
  207.     repeat
  208.       Delete(Line, 1, pos('<a',Line)-1);
  209.       BeginPos := pos('">', Line);
  210.       if BeginPos > 0 then
  211.       begin
  212.         Delete(Line, 1, BeginPos +1 );
  213.         Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
  214.         Value:= Value+', '+ Temp ;
  215.       end;
  216.     until (BeginPos < 1);
  217.     Value:= copy(Value, 3,length(Value)-1);
  218.     SetField(fieldDirector, Value);
  219.   end;
  220.  
  221.   //Description
  222.   LineNr := Findline('<b>Inhalt:</b>', Page, 0);
  223.   if LineNr > -1 then
  224.   begin
  225.     LineNr:=Findline('<a href="view.php?page=inhalt', Page,0);
  226.     Line:= Page.GetString(LineNr);
  227.     BeginPos := pos('<a href="view.php?page=inhalt', Line)+9;
  228.     EndPos:= pos('"><b>[mehr]', Line);
  229.     Value:=copy(Line, BeginPos, EndPos - BeginPos);
  230.     GetDescriptions(Value);
  231.   end;      
  232.   
  233.   //Rating
  234.   LineNr := Findline('<br>Note:', Page, 0);
  235.   if LineNr > -1 then
  236.   begin
  237.     Line:= Page.GetString(LineNr);
  238.     BeginPos := pos('<br>Note:',Line) +10;
  239.     EndPos:= pos('  ',Line);
  240.     Value := copy(Line,BeginPos, Endpos-Beginpos);
  241.     Value := IntToStr(Round(StrToInt(StrGet(Line, BeginPos), 0) + (StrToInt(StrGet(Line, BeginPos +3), 0) /10)));
  242.     SetField(fieldRating,Value );
  243.   end;
  244.   DisplayResults;
  245. end;
  246.    
  247.     
  248. procedure GetActors(Address: string);
  249. var
  250.   Line,Temp, Value: string;
  251.   LineNr: Integer;
  252.   BeginPos, EndPos: Integer;
  253.   Page: TStringList;
  254. begin
  255.   
  256.   Page := TStringList.Create;
  257.   Page.Text := GetPage('http://www.ofdb.de/'+Address);
  258.   LineNr := Findline('Darsteller', Page, 0);
  259.   if LineNr > -1 then
  260.   begin
  261.     Value:= '';
  262.     LineNr := LineNr+3;
  263.     Line:= Page.GetString(LineNr);
  264.     repeat
  265.       Delete(Line, 1, pos('<a',Line)-1);
  266.       BeginPos := pos('">', Line);
  267.       if BeginPos > 0 then
  268.       begin
  269.         Delete(Line, 1, BeginPos +1 );
  270.         Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
  271.         Value:= Value+', '+ Temp ;
  272.       end;
  273.     until (BeginPos < 1);
  274.     Value:= copy(Value, 3,length(Value)-1);
  275.     SetField(fieldActors, Value);
  276.   end;
  277.   Page.Free;
  278. end;        
  279.     
  280.     
  281. procedure GetDescriptions(Address: string);
  282. var
  283.   Line, Temp,Value: string;
  284.   LineNr: Integer;
  285.   BeginPos, EndPos: Integer;
  286.   Page: TStringList;
  287.   
  288. begin
  289.   Temp:= '';
  290.   Page := TStringList.Create;
  291.   Page.Text := GetPage('http://www.ofdb.de/' + Address);
  292.   LineNr := FindLine('Eine Inhaltsangabe von', Page, 0);
  293.   if LineNr > -1 then
  294.   begin
  295.     Line := Page.GetString(LineNr);
  296.     BeginPos := pos('</a></b><br><br>', Line) + 16;
  297.     while (pos('<br />', Line) >0) do
  298.          begin 
  299.            EndPos := pos('<br />', Line);
  300.            Temp := Temp + copy(Line, BeginPos, EndPos - BeginPos);
  301.            LineNr:=LineNr+1;
  302.            Line:=Page.GetString(LineNr);
  303.            BeginPos:=1;
  304.          end;    
  305.     EndPos := pos('</font></p>', Line);
  306.     Temp:= Temp +  copy(Line, BeginPos, EndPos - BeginPos);
  307.     Value:= Temp;
  308.     SetField(fieldDescription, Value);
  309.   end;
  310.   Page.Free;
  311. end;
  312.    
  313.  
  314. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  315. var
  316.   Line: string;
  317.   MovieTitle, MovieAddress: string;
  318.   StartPos, EndPos: Integer;
  319.  
  320. begin
  321.   Line := Page.GetString(LineNr);
  322.   repeat
  323.     StartPos := pos('<a href=''view.php?page=film&fid=', Line);
  324.     if StartPos > 0 then
  325.     begin
  326.       Delete(Line, 1, StartPos + 8);
  327.       MovieAddress := copy(Line, 1, pos('''>', Line) - 1);
  328.       StartPos := pos('''>', Line) +2;
  329.       MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
  330.       HTMLRemoveTags(MovieTitle);
  331.       PickTreeAdd(MovieTitle , 'http://www.ofdb.de/' + MovieAddress);
  332.     end;
  333.   until (StartPos < 1);
  334. end;
  335.  
  336. begin
  337.   if CheckVersion(3,4,0) then
  338.   begin
  339.     MovieName := GetField(fieldOriginalTitle);
  340.     if MovieName = '' then
  341.       MovieName := GetField(fieldTranslatedTitle);
  342.     if Input('OFDb', 'Bitte Titel eingeben :', MovieName) then
  343.     begin
  344.       AnalyzePage('http://www.ofdb.de/view.php?page=suchergebnis&SText='+UrlEncode(MovieName)+'&Kat=All');
  345.     end;
  346.   end else
  347.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
  348. end.
  349.  
  350.